/***************************************************************************
 *   Copyright (C) 2007 by Grzegorz Latarowski, Maciej Gajewski            *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 ***************************************************************************/



// local
#include "gstringdelegate.h"



// ===========================================================================
//                              GStringDelegate
// ===========================================================================


// --------------- GStringDelegate::createEditor() ---------------------------
QWidget * GStringDelegate::createEditor( QWidget * pParent,
									   const QStyleOptionViewItem & option,
									   const QModelIndex & index
									 ) const
{
	Q_UNUSED( option );
	Q_UNUSED( index );
	
	// create and configure editor
	
	QLineEdit * pEditor = new QLineEdit( pParent );
	
    return pEditor;
}
// ---------------------------------------------------------------------------


// --------------- GStringDelegate::setEditorData() --------------------------
/// Initializes editor widhet with proper data
void GStringDelegate::setEditorData( QWidget * pEditor,
								   const QModelIndex & index
								 ) const
{
	Q_ASSERT( index.model() );
	
	QVariant value = index.model()->data( index, Qt::UserRole );
	
	QLineEdit * pLineEdit = qobject_cast< QLineEdit * >( pEditor );
	
	if( pLineEdit )
	{
		pLineEdit->setText( value.toString() );
	}
}
// ---------------------------------------------------------------------------


// --------------- GStringDelegate::setModelData() ---------------------------
void GStringDelegate::setModelData( QWidget * pEditor,
								  QAbstractItemModel * pModel,
		  						  const QModelIndex & index
								) const
{
    QLineEdit * pLineEdit = qobject_cast< QLineEdit * >( pEditor );
	if( pLineEdit )
	{
		QString name = pLineEdit->text();
		pModel->setData( index, name, Qt::UserRole );
		pModel->setData( index, name, Qt::DisplayRole );
	}
}
// ---------------------------------------------------------------------------

// eof
